package com.ruoyi.business.mapper;

import java.util.Date;
import java.util.List;
import com.ruoyi.business.domain.EquipmentVariablesHistory;
import org.apache.ibatis.annotations.Param;

/**
 * 设备变量历史数据Mapper接口
 * 
 * @author ldkj
 * @date 2025-02-27
 */
public interface EquipmentVariablesHistoryMapper 
{
    /**
     * 查询设备变量历史数据
     * 
     * @param historyId 设备变量历史数据主键
     * @return 设备变量历史数据
     */
    public EquipmentVariablesHistory selectEquipmentVariablesHistoryByHistoryId(Long historyId);

    /**
     * 查询设备变量历史数据列表
     * 
     * @param equipmentVariablesHistory 设备变量历史数据
     * @return 设备变量历史数据集合
     */
    public List<EquipmentVariablesHistory> selectEquipmentVariablesHistoryList(EquipmentVariablesHistory equipmentVariablesHistory);

    /**
     * 根据变量ID查询历史数据列表
     * 
     * @param variableId 变量ID
     * @return 设备变量历史数据集合
     */
    public List<EquipmentVariablesHistory> selectEquipmentVariablesHistoryByVariableId(Long variableId);

    /**
     * 根据变量名称查询历史数据列表
     * 
     * @param variableName 变量名称
     * @return 设备变量历史数据集合
     */
    public List<EquipmentVariablesHistory> selectEquipmentVariablesHistoryByVariableName(String variableName);



    /**
     * 根据操作类型查询历史数据列表
     * 
     * @param operationType 操作类型
     * @return 设备变量历史数据集合
     */
    public List<EquipmentVariablesHistory> selectEquipmentVariablesHistoryByOperationType(String operationType);

    /**
     * 新增设备变量历史数据
     * 
     * @param equipmentVariablesHistory 设备变量历史数据
     * @return 结果
     */
    public int insertEquipmentVariablesHistory(EquipmentVariablesHistory equipmentVariablesHistory);

    /**
     * 修改设备变量历史数据
     * 
     * @param equipmentVariablesHistory 设备变量历史数据
     * @return 结果
     */
    public int updateEquipmentVariablesHistory(EquipmentVariablesHistory equipmentVariablesHistory);

    /**
     * 删除设备变量历史数据
     * 
     * @param historyId 设备变量历史数据主键
     * @return 结果
     */
    public int deleteEquipmentVariablesHistoryByHistoryId(Long historyId);

    /**
     * 批量删除设备变量历史数据
     * 
     * @param historyIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEquipmentVariablesHistoryByHistoryIds(Long[] historyIds);

    /**
     * 根据变量ID删除历史数据
     * 
     * @param variableId 变量ID
     * @return 结果
     */
    public int deleteEquipmentVariablesHistoryByVariableId(Long variableId);

    /**
     * 清理指定天数之前的历史数据
     * 
     * @param days 保留天数
     * @return 结果
     */
    public int cleanHistoryDataBeforeDays(int days);

    /**
     * 批量新增设备变量历史数据
     * 
     * @param historyList 设备变量历史数据集合
     * @return 结果
     */
    public int batchInsertEquipmentVariablesHistory(List<EquipmentVariablesHistory> historyList);

    /**
     * 根据时间范围和指定变量英文名查询历史记录
     */
    List<EquipmentVariablesHistory> selectByTimeRangeAndVariables(
            @Param("startTime") Date startTime,
            @Param("endTime") Date endTime,
            @Param("variableEnNames") List<String> variableEnNames
    );
}